const express = require('express')
// 导入开放域名第三方
const cors = require('cors')
// 导入解析字符串第三方
const body = require('body-parser')
const path = require('path')
// 验证token第三方
const { expressjwt } = require('express-jwt')
// 导入配置文件
const { port, pass, secret } = require('./config')
// 导入路由表
const router = require('./routes')
// 导入全局中间件
const { empty, error, info } = require('./middleware')
// 导入数据库连接操作
const { connect } = require('./db')
// 创建服务器
const app = express()
// 连接服务器
connect()
// 开发域名
app.use(cors())
// 配置静态资源
app.use('/public', express.static(path.resolve(__dirname,'./public/')))
// 解析请求体
app.use(body({ extended: false }))
app.use(body.json())
// 全局中间件, 记录访问信息
app.use(info)
// 配置验证token
app.use(expressjwt({
    secret,
    algorithms: ['HS256']
}).unless({ path: pass }))
// 挂载路由表
app.use(router)
// 挂载全局空路由
app.use(empty)
// 全局错误中间件
app.use(error)
// 监听指定端口
app.listen(port, () => {
    console.log(`
        成功开启服务器
        正在监听${port}端口号
        我是oa的服务器
    `);
})